package com.lin.fengxiu.dto.validators;

import org.apache.commons.lang3.StringUtils;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
 * @ClassName TokenPasswordValidator
 * @Description TokenPassword 表示要调用的校验注解
 *                String 表示要接收进行校验的参数（该字段就是 TokenPassword 所标识的字段）
 * @Author wushaopei
 * @Date 2021/3/18 21:53
 * @Version 1.0
 */
public class TokenPasswordValidator implements ConstraintValidator<TokenPassword, String> {

    private Integer min;
    private Integer max;

    /**
     * @Description 初始化获取用户传入的参数数据
     * @param constraintAnnotation 回传该参数是用来初始化相关参数，如：min、max等
     */
    @Override
    public void initialize(TokenPassword constraintAnnotation) {
        // 获取用户传入的参数
        this.min = constraintAnnotation.min();
        this.max = constraintAnnotation.max();
    }

    /**
     * @Description 对用户传入的参数数据进行处理
     * @param s
     * @param constraintValidatorContext
     * @return
     */
    @Override
    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {

        // 判空
        if(StringUtils.isEmpty(s)){
            return true;
        }
        return s.length() >= this.min && s.length() <= this.max;
    }
}
